package com.duoduo.common.api.myinterface.mq;


import com.duoduo.common.api.constants.SerializationType;

import java.util.Map;

/**用于把消息转换成不同类型的对象，例如bean对象，然后把这个类型传递给子类进行处理。
 * @author DELL
 *
 */
public interface MessageHandler {

	public void execute(byte[] message);
	
	/**有异常直接抛出，不捕获
	 * @param message
	 */
	public void executeUnsafe(byte[] message) throws Throwable;
	
	/**
	 * @param message
	 * @param properties 属性map
	 */
	default public void execute(byte[] message, Map<String, Object> properties) {
		
	}
	
	/**有异常直接抛出，不捕获
	 * @param message
	 * @param properties 属性map
	 */
	default public void executeUnsafe(byte[] message, Map<String, Object> properties) throws Throwable {
		
	}
	
	/**接收一个json字符串
	 * @param messageStr
	 */
	public void execute(String messageStr);
	
	/**设置反序列化类型
	 * @param serializationType
	 */
	default public void setSerializationType(SerializationType serializationType) {
		
	}
	
	/**设置唯一key，用于表示当前的MessageHandler
	 * @param uniqueKey
	 */
	default public void setUniqueKey(String uniqueKey) {
		
	}
	
	/**获取唯一key，用于表示当前的MessageHandler
	 */
	default public String getUniqueKey() {
		return null;
	}

}
